#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>

//n的阶乘方法一：
//int Fact(int n)
//{
//	if (n == 0)
//		return 1;
//	else if(n > 0)
//		return n * Fact(n - 1);
//}
//
//int main()
//{
//	int i = 0;
//	scanf("%d", &i);
//	int r = Fact(i);
//	printf("%d", r);
//	return 0;
//}

//n的阶乘方法二：
//int Fact(int n)
//{
//	int j = 0;
//	int ret = 1;
//	for (j = 1; j <= n; j++) {
//		ret = ret * j;
//	}
//	return ret;
//}
//
//int main()
//{
//	int i = 0;
//	scanf("%d", &i);
//	int r = Fact(i);
//	printf("%d", r);
//	return 0;
//}

//输入一个整数m，按照顺序打印整数的每一位
//void print(int n)
//{
//	if (n > 9)
//		print(n / 10);
//	printf("%d ", n % 10);
//}
//
//int main()
//{
//	int num = 0;
//	scanf("%d", &num);
//	print(num);
//	return 0;
//}


//求第n个斐波那契数
// 方法一:
//int Fib(int n)
//{
//	if (n <= 2)
//		return 1;
//	else
//		return Fib(n - 1) + Fib(n - 2);
//}
//
//int main()
//{
//	int i = 0;
//	scanf("%d", &i);
//	int r = Fib(i);
//	printf("%d", r);
//	return 0;
//}

//方法二：
int Fib(int n)
{
	int a = 1;
	int b = 1;
	int c = 1;

	while (n > 2) {
		c = a + b;
		a = b;
		b = c;
		n--;
	}
	return c;
}

int main()
{
	int n = 0;
	scanf("%d", &n);
	int r = Fib(n);
	printf("%d\n", r);
	return 0;
}